/*****************************************************************************/
/*                        >>> estructuras.h <<<                              */
/*	Trabajo Practico 2do. cuatrimestre 2011                                  */
/*	TP:"FUSELAJE"                                                            */
/*	GRUPO: Reduce Fat Fast                                                   */
/*	INTEGRANTES: Emanuel Genovese                                            */
/*               Federico Gabriel Garcia                                     */
/*               Federico Pioli                                              */
/*               Esther Insfrain                                             */
/*               Luciano Bagattin                                            */
/*	Fecha UM:                                                                */
/*****************************************************************************/
#ifndef ESTRUCTURAS_H
#define ESTRUCTURAS_H
#include <semaphore.h>
#include "log.h"
#include "sys/timeb.h"

struct datosConfig {
	char sModoInicio[2];
	char sIpLocal[18];
	char sIPRAID[18];
	int iPuertoLocal;
	int iPuertoRAID;
	char sConsola[2];
	char sAlgo_Planif[2];
	char sPathConsola[1024];
	char sLogs[2];
	char sIdDisco[30];
	int iCabeza;
	int iCilindros;
	int iSectores;
	int iTiempoLectura;
	int iTiempoEscritura;
	int iRPM;
	float fTiempoBusqueda;
	float fTiempoCache;
	char sCache[2];
}__attribute__ ((__packed__));
typedef struct datosConfig datosConfig;
int iCilindros, iCabezales, iSectores;

sem_t semColasPedidos1;
sem_t semColasPedidos2;
pthread_t tAtencionPedidos;

struct stManejoHilo {
	datosConfig *dC;
	t_log* log;
}__attribute__ ((__packed__));
typedef struct stManejoHilo stManejoHilo;

struct stNodoPedido {
	int iNumSector;
	int iTipoOperacion;
	char info[512];
	int iSocket;
	int iUsado;
	char sDescriptorOriginal[16];
	struct stNodoPedido * Sgte;
}__attribute__ ((__packed__));

typedef struct stNodoPedido stNodoPedido;

struct stNodoPista {
	int iNumPista;
	int iCantPedidos;
	stNodoPedido *lPedidosFte;
	stNodoPedido *lPedidosFin;
	struct stNodoPista * Ant;
	struct stNodoPista * Sgte;
}__attribute__ ((__packed__));
typedef struct stNodoPista stNodoPista;

struct stVecCache {
	int iNumSector;
	int iInvalido;
	char info[512];
    int iPista;
	struct timeb stTiempoActual;
}__attribute__ ((__packed__));
typedef struct stVecCache stVecCache;

stVecCache *vecCache;

#endif /*ESTRUCTURAS_H*/
